

;;;
;;; Object type parent - Inherits from Thing
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define (object n)
	(let ((type 'object)								;Identifier
		  (super (thing n)))
	(define this
		(lambda (msg)
			(cond ((eq? msg 'getType) type)				;Return object's type
				  (else (super msg)))
		)
	)
	this)
)

(define (equipment n)
	(let ((type 'equipment)
		  (super (object n)))
	(define this
		(lambda (msg)
			(cond ((eq? msg 'getType) type)
				(else (super msg)))
		)
	)
	this)
)

(define (weapon n)
	(let ((type 'weapon)
		  (super (equipment n)))
	(define this
		(lambda (msg)
			(cond ((eq? msg 'getType) type)
				(else (super msg)))
		)
	)
	this)
)

(define (armor n)
	(let ((type 'armor)
		  (super (equipment n)))
	(define this
		(lambda (msg)
			(cond ((eq? msg 'getType) type)
				(else (super msg)))
		)
	)
	this)
)

(define (accesory n)
	(let ((type 'accesory)
		  (super (equipment n)))
	(define this
		(lambda (msg)
			(cond ((eq? msg 'getType) type)
				(else (super msg)))
		)
	)
	this)
)

(define (item n)
	(let ((type 'item)
		  (super (object n)))
	(define this
		(lambda (msg)
			(cond ((eq? msg 'getType) type)
				(else (super msg)))
		)
	)
	this)
)

(define (potion n)
	(let ((type 'potion)
		  (super (item n)))
	(define this
		(lambda (msg)
			(cond ((eq? msg 'getType) type)
				(else (super msg)))
		)
	)
	this)
)

(define (scroll n)
	(let ((type 'scroll)
		  (super (item n)))
	(define this
		(lambda (msg)
			(cond ((eq? msg 'getType) type)
				(else (super msg)))
		)
	)
	this)
)

(define (misc n)
	(let ((type 'misc)
		  (super (item n)))
	(define this
		(lambda (msg)
			(cond ((eq? msg 'getType) type)
				(else (super msg)))
		)
	)
	this)
)